﻿
Namespace HybrisItems.Model

    ''' <summary>
    ''' An EnumerationType defines fixed value types. (The typesystem provides item enumeration only)
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
        Public Class EnumTypeModel

        ''' <summary>
        ''' Provides possibility to add meaningfull description phrase for a generated model class.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Description As String

        ''' <summary>
        ''' Configures one value of this Enumeration.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Value As EnumValueModel

        ''' <summary>
        ''' The unique code of this Enumeration.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Code As CodeModel

        ''' <summary>
        ''' If 'true', the item will be created during initialization.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property AutoCreate As Boolean

        ''' <summary>
        ''' If 'false' no constants will be generated at constant class of extension as well as at corresponding servicelayer enum class. Default is 'true'.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Generate As Boolean

        ''' <summary>
        ''' Specifies the name of the associated jalo class. 
        ''' The specified class must extend de.hybris.platform.jalo.enumeration.EnumerationValue and will not be generated. 
        ''' By specifying a jalo class you can change the implementation to use for the values of this enumeration. 
        ''' By default EnumerationValue class is used.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property JaloClass As ClassModel

        ''' <summary>
        ''' Whether it is possible to add new values by runtime. 
        ''' Also results in different types of enums: 'true' results in 'classic' hybris enums, 'false' results in Java enums. 
        ''' Default is false. Both kinds of enums are API compatible, and switching between enum types is possible by running a system update.
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        Public Property Dynamic As Boolean

    End Class

End Namespace
